package cn.exrick.xboot.modules.projectinfo.mapper;

import cn.exrick.xboot.modules.projectinfo.entity.*;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 项目信息数据处理层
 * @author sdtf
 */
@DS("other")
public interface ProjectInfoMapper extends BaseMapper<ProjectInfo> {

    /**
     * 今年立项项目数量，金额
     */
    RequireData ProjectNumberAndMoneyByYear();

    /**
     * 今年在建项目数量，金额
     */
    RequireData IsProgectNumberAndMoneyByYear();

    /**
     * 今年关闭项目数量，金额
     */
    RequireData ProjectsFinishedNumberAndMoneyByYear();

    /**
     * 本月立项项目数量，金额
     */
    RequireData ProjectNumberAndMoneyByMonth();

    /**
     * 本月在建项目数量，金额
     */
    RequireData IsProgectNumberAndMoneyByMonth();

    /**
     * 本月关闭项目数量，金额
     */
    RequireData ProjectsFinishedNumberAndMoneyByMonth();

    /**
     * 生命周期数量
     */
    RequireData ProjectLifeNumber();

    /**
     * 项目类型数量
     */
    List<RequireData> ProjectType();
    /**
     * 协同项目类型数量
     */
    List<RequireData> ProjectWithOther();
    /**
     * 项目状态名称数量
     */
    List<RequireData> ProjectStatus();

    /**
     * 新建重大项目
     */
    List<RequireData> ProjectNewByYear();

    /**
     * 在建重大项目
     */
    List<RequireData> ProjectIsByYear();



    /**
     * 单位基本情况本年
     */
    List<DeptBasicInfo> getDeptName();
    List<DeptBasicInfo> getLXInfo();

    List<DeptBasicInfo> getGBInfo();

    List<DeptBasicInfo> getSRQRInfo();

    List<DeptBasicInfo> getSPInfo();

    List<DeptBasicInfo> getKPInfo();



    /**
     * 单位基本情况本月
     */
    List<DeptBasicInfo> getLXInfoByMonth();

    List<DeptBasicInfo> getGBInfoByMonth();

    List<DeptBasicInfo> getSRQRInfoByMonth();

    List<DeptBasicInfo> getSPInfoByMonth();

    List<DeptBasicInfo> getKPInfoByMonth();


    /**
     * 单位基本情况本月(生命周期)
     */
    List<DeptLife> DeptProjectLife();

    /**
     * 单位基本情况本月(生命周期) -关闭项目
     */
    List<DeptLife> DeptProjectLifeClose();

    List<DeptLife> DeptProjectIsBuilding();

    List<DeptLife> DeptProjectClosed();
    List<DeptLife> DeptLXProjectLife();

    /**
     * 单位全年收票
     */
    List<DeptLife> ProjectCost();
    /**
     * 单位本月收票
     */
    List<DeptLife> ProjectCostByMonth();



    /**
     * 单位全年开票
     */
    List<DeptLife> ProjectIncome();
    /**
     * 单位本月开票
     */
    List<DeptLife> ProjectIncomeByMonth();


    /**
     * 新建项目--三级菜单
     */
    List<ProjectNew> ProjectNewInfo();
    List<ProjectNew> ProjectNewInfo1(@Param("pageNumber")int pageNumber,@Param("pageSize")int pageSize);

    /**
     * 在建项目--三级菜单
     */
    List<ProjectNew> ProjectIsInfo();
    List<ProjectNew> ProjectIsInfo1(@Param("pageNumber")int pageNumber,@Param("pageSize")int pageSize);

    //在建项目and项目、单位名称模糊查询
    List<ProjectNew> ProjectIsInfoLikeProjectNumber(ProjectNew projectNew);


    /**
     * 数量金额二级菜单
     */
    List<NumberAndMoneyTwice> selectDeptName();

    List<NumberAndMoneyTwice> getLXNumberAndMoneyTwice();

    List<NumberAndMoneyTwice> getGBNumberAndMoneyTwice();

    List<NumberAndMoneyTwice> getLXNumberAndMoneyTwiceByMonth();

    List<NumberAndMoneyTwice> getGBNumberAndMoneyTwiceByMonth();


    /**
     * 收票跳转二级菜单
     */
    List<NumberAndMoneyTwice> SPMoneyTwice();
    List<NumberAndMoneyTwice> SPMoneyTwice1(@Param("pageNumber")int pageNumber,@Param("pageSize")int pageSize);
    List<NumberAndMoneyTwice> SPMoneyTwiceByMonth();
    List<NumberAndMoneyTwice> SPMoneyTwiceByMonth1(@Param("pageNumber")int pageNumber,@Param("pageSize")int pageSize);



    /**
     * 开票跳转二级菜单
     */
    List<NumberAndMoneyTwice> KPMoneyTwice();
    List<NumberAndMoneyTwice> KPMoneyTwice1(@Param("pageNumber")int pageNumber,@Param("pageSize")int pageSize);
    List<NumberAndMoneyTwice> KPMoneyTwiceByMonth();
    List<NumberAndMoneyTwice> KPMoneyTwiceByMonth1(@Param("pageNumber")int pageNumber,@Param("pageSize")int pageSize);




    /**
     * 立项项目详情三级菜单
     */
    List<NumberAndMoneyTwice> LXProjectInfoThird(@Param("deptName")String deptName);
    List<NumberAndMoneyTwice> LXProjectInfoThird1(@Param("deptName")String deptName,@Param("pageNumber")int pageNumber,@Param("pageSize")int pageSize);
    List<NumberAndMoneyTwice> LXProjectInfoThirdByMonth(@Param("deptName")String deptName);
    List<NumberAndMoneyTwice> LXProjectInfoThirdByMonth1(@Param("deptName")String deptName,@Param("pageNumber")int pageNumber,@Param("pageSize")int pageSize);
    /**
     * 关闭项目详情三级菜单
     */
    List<NumberAndMoneyTwice> GBProjectInfoThird(@Param("deptName")String deptName);
    List<NumberAndMoneyTwice> GBProjectInfoThird1(@Param("deptName")String deptName,@Param("pageNumber")int pageNumber,@Param("pageSize")int pageSize);
    List<NumberAndMoneyTwice> GBProjectInfoThirdByMonth(@Param("deptName")String deptName);
    List<NumberAndMoneyTwice> GBProjectInfoThirdByMonth1(@Param("deptName")String deptName,@Param("pageNumber")int pageNumber,@Param("pageSize")int pageSize);
    /**
     * 在建项目详情三级菜单
     */
    List<NumberAndMoneyTwice> ZJProjectInfoThird(@Param("deptName")String deptName);
    List<NumberAndMoneyTwice> ZJProjectInfoThird1(@Param("deptName")String deptName,@Param("pageNumber")int pageNumber,@Param("pageSize")int pageSize);

    /**
     * 已开工半年项目详情三级菜单
     */
    List<NumberAndMoneyTwice> BNProjectInfoThird(String deptName);
    List<NumberAndMoneyTwice> BNProjectInfoThird1(@Param("deptName")String deptName,@Param("pageNumber")int pageNumber,@Param("pageSize")int pageSize);
    /**
     * 已开工半年-一年项目详情三级菜单
     */
    List<NumberAndMoneyTwice> BNDYNProjectInfoThird(String deptName);
    List<NumberAndMoneyTwice> BNDYNProjectInfoThird1(@Param("deptName")String deptName,@Param("pageNumber")int pageNumber,@Param("pageSize")int pageSize);
    /**
     * 已开工一年到两年项目详情三级菜单
     */
    List<NumberAndMoneyTwice> YNDLNProjectInfoThird(String deptName);
    List<NumberAndMoneyTwice> YNDLNProjectInfoThird1(@Param("deptName")String deptName,@Param("pageNumber")int pageNumber,@Param("pageSize")int pageSize);
    /**
     * 已开工两年到三年项目详情三级菜单
     */
    List<NumberAndMoneyTwice> LNDSNProjectInfoThird(String deptName);
    List<NumberAndMoneyTwice> LNDSNProjectInfoThird1(@Param("deptName")String deptName,@Param("pageNumber")int pageNumber,@Param("pageSize")int pageSize);
    /**
     * 已开工三年以上项目详情三级菜单
     */
    List<NumberAndMoneyTwice> SNYSProjectInfoThird(String deptName);
    List<NumberAndMoneyTwice> SNYSProjectInfoThird1(@Param("deptName")String deptName,@Param("pageNumber")int pageNumber,@Param("pageSize")int pageSize);


    /**
     * 首页--开票与收入确认
     */
    DeptLife KPByMonth();

    DeptLife KPByYear();

    DeptLife SRQRByMonth();

    DeptLife SRQRByYear();

    /**
     * 首页--现金流入流出
     */

    DeptLife XJLRYear();
    DeptLife XJLRMonth();

    DeptLife XJLCYear();

    DeptLife XJLCMonth();

    /**
     * 首页--应收账款
     */
    AllBoardData getYSZKJSK();
    AllBoardData getYSZKJDK();


    /**
     * 首页--数据集合
     */
    List<AllBoardData> selectDeptName1();
    List<AllBoardData> selectTBNumber();
    List<AllBoardData> selectZBNumber();
    List<AllBoardData> GETXJLR();
    List<AllBoardData> GETXJLC();
    List<AllBoardData> selectHTQDMoney();
    List<AllBoardData> GetLXNum();
    List<AllBoardData> GetGBNum();
    List<AllBoardData> GetSRQR();
    List<AllBoardData> GetKP();

    List<AllBoardData> getJSK();

    List<AllBoardData> getJDK();


    /**
     * 进来后的首页--数据封装--本年
     */
    List<SYData> getDept();//获取单位名称

    List<SYData> getBidInfo();//获取投标数量，金额

    List<SYData> getBidBackInfo();//获取中标数量，金额

    List<SYData> getContractInfo();//得到单位的合同签订数量，金额

    List<SYData> getLRMoney();//得到流入金额

    List<SYData> getLCMoney();//得到流出金额

    List<SYData> getJSMoney();//得到应收账款结算款

    List<SYData> getJDMoney();//得到应收账款进度款

    List<SYData> getSRQRMoney();//得到收入确认金额

    List<SYData> getKPJEMoney();//得到开票金额

    List<SYData> getSPJEMoney();//得到收票金额

    List<SYData> getLX();

    List<SYData> getGB();

    List<SYData> getZJ();



    /**
     * 进来后的首页--数据封装--本月
     */

    List<SYData> getBidInfoByMonth();//获取投标数量，金额

    List<SYData> getBidBackInfoByMonth();//获取中标数量，金额

    List<SYData> getContractInfoByMonth();//得到单位的合同签订数量，金额

    List<SYData> getLRMoneyByMonth();//得到流入金额

    List<SYData> getLCMoneyByMonth();//得到流出金额

    List<SYData> getJSMoneyByMonth();//得到应收账款结算款

    List<SYData> getJDMoneyByMonth();//得到应收账款进度款

    List<SYData> getSRQRMoneyByMonth();//得到收入确认金额

    List<SYData> getKPJEMoneyByMonth();//得到开票金额

    List<SYData> getSPJEMoneyByMonth();//得到收票金额

    List<SYData> getLXByMonth();

    List<SYData> getGBByMonth();

    List<SYData> getZJByMonth();


    /**
     * 获取项目id和项目金额
     */
    List<ProjectInfo> getProjectAmount();

    /**
     * 获取项目id和单位名称
     */
    List<ProjectInfo> getdept();

    /**
     * 在建大项目排行
     */
    List<ProjectInfo> zjprojectorder(@Param("pageSize")int pageSize, @Param("pageNumber")int pageNumber, @Param("startDate")String startDate, @Param("endDate")String endDate);

    List<ProjectInfo> zjprojectorder1(@Param("startDate")String startDate, @Param("endDate")String endDate);

    List<ProjectInfo> zjprojectordernull1();

    List<ProjectInfo> zjprojectordernull(@Param("pageSize")int pageSize, @Param("pageNumber")int pageNumber);

    /**
     * 立项大项目排行
     */
    List<ProjectInfo> lxprojectorder(@Param("pageSize")int pageSize, @Param("pageNumber")int pageNumber, @Param("startDate")String startDate, @Param("endDate")String endDate);

    List<ProjectInfo> lxprojectorder1(@Param("startDate")String startDate, @Param("endDate")String endDate);

    List<ProjectInfo> lxprojectordernull1();

    List<ProjectInfo> lxprojectordernull(@Param("pageSize")int pageSize, @Param("pageNumber")int pageNumber);

    /**
     * 关闭大项目排行
     */
    List<ProjectInfo> gbprojectorder(@Param("pageSize")int pageSize, @Param("pageNumber")int pageNumber, @Param("startDate")String startDate, @Param("endDate")String endDate);

    List<ProjectInfo> gbprojectorder1(@Param("startDate")String startDate, @Param("endDate")String endDate);

    List<ProjectInfo> gbprojectordernull1();

    List<ProjectInfo> gbprojectordernull(@Param("pageSize")int pageSize, @Param("pageNumber")int pageNumber);


    /**
     * 公司不同状态下的数量和金额总数
     */
    List<CompanyNumberAmount> getCompanyNumberAmount();

    List<CompanyNumberAmount> getCompanyNumberAmountMonth();

    List<CompanyNumberAmount> getCompanyNumberAmountYear();

    /**
     * 在建项目类型分析
     */
    List<ProjectTypeAnalysis> getProjectTypeAnalysis();

    List<ProjectTypeAnalysis> getOverallProjectTypeAnalysis();

}